package com.cll.learn.rpc.common.registry;

import com.cll.learn.rpc.common.dto.RpcProviderDto;

import java.util.List;

/**
 * 描述信息:
 * 注册中心顶级接口
 * 服务的注册
 * 服务的发现
 * 服务的监听
 * @author CLL
 * @version 1.0
 * @date 2020/9/14 15:35
 */
public interface RegistryHandler {

    /**
     * 服务注册
     * @param serviceName   注册服务名称
     * @param ip    服务提供者的IP
     * @param port  服务提供者监听的端口
     */
    void registryService(String serviceName, String ip, Integer port);

    /**
     * 服务注册
     * @param serviceName   注册服务名称
     * @param providerUrl    服务提供者连接信息
     */
    void registryService(String serviceName, String providerUrl);

    /**
     * 服务注册
     * @param serviceName   注册服务名称
     * @param provider  服务提供者的信息
     */
    void registryService(String serviceName, RpcProviderDto provider);

    /**
     * 服务的发现
     * @param serviceName   注册服务名称
     * @return  服务提供者的连接地址列表
     */
    List<String> discovery(String serviceName);
}